library(dplyr)
library(sf)
library(DT)
library(plotly)
library(leaflet)
library(raster)
library(spData)

Carga de datos para conocer las especies de primates en Costa Rica

primates_cr <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/gbif/primates-cr-registros.csv",
    options = c(
      "X_POSSIBLE_NAMES=decimalLongitude",
      "Y_POSSIBLE_NAMES=decimalLatitude"
    ),
    quiet = TRUE
  )

Se cargó capa de cantones y provincias, asignación de CRS

# Capa de cantones y provincias
cantones <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/ign/delimitacion-territorial-administrativa/cr_cantones_simp_wgs84.geojson",
    quiet = TRUE
  )
provincias <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/ign/delimitacion-territorial-administrativa/cr_provincias_simp_wgs84.geojson",
    quiet = TRUE
  )

# # Asignación de CRS
st_crs(primates_cr) = 4509
st_crs(cantones) = 4509

primates_cr <-
  primates_cr %>%
  st_join(cantones["canton"])

Tabla de Datos

Se remonbraron los encabezados de la tabla y se procedió a visualizarla

primates_cr %>%
  st_drop_geometry() %>%
  dplyr::select(family, species, canton, stateProvince, eventDate) %>%
  DT::datatable(
    colnames = c("Familia", "Especie", "Cantones", "Provincia", "Fecha"),
    options = list(
      searchHighlight = TRUE,
      language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
    )
  )

Gráfico pastel

Se crearon las variables de las especies de primates y asignación de color para el gráfico

a <- primates_cr %>% dplyr::select(species)%>%
  filter(species == "Alouatta palliata")

b <- primates_cr %>% dplyr::select(species)%>%
  filter(species == "Cebus capucinus")

c <- primates_cr %>% dplyr::select(species)%>%
  filter(species == "Ateles geoffroyi")

d <- primates_cr %>% dplyr::select(species)%>%
  filter(species == "Saimiri oerstedii")
especies_num <- c(1994, 453, 599, 1463)

especies_nom <- c("Alouatta palliata","Cebus capucinus","Ateles geoffroyi","Saimiri oerstedii")

colors <- c('CC6666', 'FF9999', '993366', '6699CC')

 primates_cr %>%
   plot_ly(
     labels = ~ especies_nom,
     values = ~ especies_num,
     type ="pie",
     marker = list(colors = colors,
                   line =list(color = '99FF99', width = 0))) %>%
   config(locale = "es") %>%
   layout(
     title = "Porcentaje de los primates en el país",
     font = "calibri",
     xaxis = list(
       showgrid = FALSE,
       zeroline = FALSE,
       showticklabels = FALSE
     ),
     yaxis = list(
       showgrid = FALSE,
       zeroline = FALSE,
       showticklabels = FALSE
     ))

Se crearon los filtros

Mono_araña <- primates_cr %>% dplyr::select(species,stateProvince,
                                    canton,eventDate)%>%
   filter(species == "Ateles geoffroyi")
 
 Mono_cariblanco <- primates_cr %>% dplyr::select(species,stateProvince,
                                             canton,eventDate)%>%
   filter(species == "Cebus capucinus")
 
 Mono_congo <- primates_cr %>% dplyr::select(species,stateProvince,
                                                  canton,eventDate)%>%
   filter(species == "Alouatta palliata")
 
 Mono_ardilla <- primates_cr %>% dplyr::select(species,stateProvince,
                                             canton,eventDate)%>%
   filter(species == "Saimiri oerstedii")
 
 
    
  pMono_araña <- paste0("<b>", "Especei: ","</b>",
                       (Mono_araña$species), "<br>",
                       "</b>", "Provincia: ","</b>",
                       (Mono_araña$provincia), "<br>",
                       "<b>", "canton: ","</b>",
                       (Mono_araña$canton), "<br>",
                       "<b>", "Fecha: ","</b>",
                       (Mono_araña$eventDate)
                       )
  
  pMono_cariblanco <- paste0("<b>", "Especei: ","</b>",
                            (Mono_cariblanco$species), "<br>",
                            "</b>", "Provincia: ","</b>",
                            (Mono_cariblanco$provincia), "<br>",
                            "<b>", "canton: ","</b>",
                            (Mono_cariblanco$canton), "<br>",
                            "<b>", "Fecha: ","</b>",
                            (Mono_cariblanco$eventDate)
  ) 
  
pMono_congo <- paste0("<b>", "Especei: ","</b>",
                            (Mono_congo$species), "<br>",
                            "</b>", "Provincia: ","</b>",
                            (Mono_congo$provincia), "<br>",
                            "<b>", "canton: ","</b>",
                            (Mono_congo$canton), "<br>",
                            "<b>", "Fecha: ","</b>",
                            (Mono_congo$eventDate)
                          ) 
  
 pMono_ardilla <- paste0("<b>", "Especei: ","</b>",
                       (Mono_ardilla$species), "<br>",
                       "</b>", "Provincia: ","</b>",
                       (Mono_ardilla$provincia), "<br>",
                       "<b>", "canton: ","</b>",
                       (Mono_ardilla$canton), "<br>",
                       "<b>", "Fecha: ","</b>",
                       (Mono_ardilla$eventDate)
                      ) 

 ## Determinar colores para mapa raster
  alt <- getData(
    "worldclim",
    var = "alt",
    res = .5,
    lon = -84,
    lat = 10
  )
  
  altitud <-
    alt %>%
    crop(provincias) %>%
    mask(provincias)
  
  raster_c <- colorNumeric(
    c("#33CCCC", "#CCFFFF", "#99FFFF"),
    values(altitud),
    na.color = "transparent")

Mapa raster

 ## mapa de especies
  primates_cr %>%
    leaflet() %>%
    addProviderTiles(providers$OpenStreetMap.Mapnik, 
                     group = "OpenStreetMap") %>%
    addProviderTiles(providers$Stamen.TonerLite, 
                     group = "Stamen Toner Lite") %>%
    addProviderTiles(providers$Esri.WorldImagery, 
                     group = "Imágenes de ESRI") %>%
    addRasterImage(
      altitud,
      colors= raster_c,
      opacity= 0.8,
      group= "Altitud")%>%
  addCircleMarkers(
      data=Mono_araña,
      stroke = F,
      radius=2,
      fillColor= '#FF9999',
      fillOpacity = 1,
      popup= pMono_araña,
      group= ("Mono araña")
      ) %>%
  addCircleMarkers(
      data=Mono_cariblanco,
      stroke = F,
      radius=2,
      fillColor= '#CC9966',
      fillOpacity = 1,
      popup= pMono_cariblanco,
      group= ("Mono cariblanco")
    ) %>%
    addCircleMarkers(
      data=Mono_congo,
      stroke = F,
      radius=2,
      fillColor= '#CC6666',
      fillOpacity = 1,
      popup= pMono_congo,
      group= ("Mono congo")
    ) %>%
    addCircleMarkers(
      data=Mono_ardilla,
      stroke = F,
      radius=2,
      fillColor= '#FF9933',
      fillOpacity = 1,
      popup= pMono_ardilla,
      group= ("Mono ardilla")
    ) %>%
    addLayersControl(
      baseGroups = c("OpenStreetMap", "Stamen Toner Lite", 
                     "Imágenes de ESRI"),
      overlayGroups = c("Mono araña", "Mono cariblanco", 
                        "Mono congo", "Mono ardilla"
                        ,"Altitud")
    ) %>%
    addMiniMap(tiles = providers$Stamen.OpenStreetMap.Mapnik,
               position = "bottomleft",
               toggleDisplay = TRUE
    )